package cn.wolfcode.wolf2w.util;

import lombok.Builder;
import lombok.Getter;

/**
 * 短信rediskey的工具类
 */
@Getter
public enum RidesKey {
    //防刷
    BRUSH_PROOF("brush_proof",60L),

    //用户顶某一篇有游记
    TRAVEL_THUMBUP("travel_thumbup",-1L),

    //用户的游记收藏集合
    TRAVEL_USER_ID("travel_user_id",-1L),

    //travelStatisVO对象实例
    TRAVEL_STATIS_TRAVELSTATISVO("travel_statis_travelstatisvo",-1L),

    //用户顶某一篇攻略
    STRATEGY_THUMBUP("strategy_thumbup",-1L),

    //用户的攻略收藏集合
    STRATEGY_USER_ID("strategy_user_id",-1L),

    //strategyStatisVO对象实例
    STRATEGY_STATIS_STRATEGYSTATISVO("strategy_statis_strategystatisvo",-1L),

    //定义一个枚举对象用来指定我们的token的RedisKey
    USER_TOKEN_REDIS("user_token_redis",Consts.VERIFY_CODE_VAI_TIME * 60L),

    //定义一个枚举对象用来指定我们的短信的RedisKey
    VIREFY_CODE("virefy_code",Consts.VERIFY_CODE_VAI_TIME * 60L);

    //定义两个属性前缀和时间,都是属于Rediskey需要设置的
    private String prefx;
    private Long time;

    //给RedisKey绑定属性
    private RidesKey(String prefx, Long time){
        this.prefx = prefx;
        this.time = time;
    }

    /**
     * 定义一个方法用来获取该短信的枚举类的字符串形式
     * 因为我们的参数可能不只一个,所以我们采用可变参数的形式
     */
    public String join(String... uuids){
        StringBuilder stringBuilder = new StringBuilder(80);
        stringBuilder.append(this.prefx);
        for (String uuid : uuids) {
            stringBuilder.append(":").append(uuid);
        }
        return stringBuilder.toString();
    }
}
